package com.hik.rpq.proxy.FactoryProxy.example.cart;

import com.hik.rpq.proxy.FactoryProxy.example.entity.Item;

import java.math.BigDecimal;

/**
 * @author renpeiqian
 * @date 2021/8/19 9:56
 * @since
 */
public class EmpCart extends AbstractCart {

    @Override
    protected void processDeliveryPrice(long userId, Item item) {

          item.setDeliveryPrice(BigDecimal.ZERO);

    }

    @Override
    protected void processCouponPrice(long userId, Item item) {
        item.setCouponPrice(BigDecimal.ZERO);
    }


    /**
     * 将map的参数 转为为Cart类型
     * @param userId 用户id
     * @param items key：itemId value：count
     * @return com.hik.rpq.proxy.FactoryProxy.example.entity.Cart
     */
//    public Cart transfer(long userId, Map<Long,Integer> items){
//        Cart cart = new Cart();
//
//        List<Item> itemList  =new ArrayList<>();
//
//        //map 2 item
//        items.entrySet().stream().forEach( entry-> {
//            Item item = new Item();
//            item.setId(entry.getKey());
//            item.setQuantity(entry.getValue());
//            item.setPrice(new BigDecimal("52"));
//            itemList.add(item);
//        });
//        cart.setItems(itemList);
//
//        //处理商品优惠及运费
//        itemList.stream().forEach( item -> {
//            //免运费
//            item.setDeliveryPrice(BigDecimal.ZERO);
//            // 无优惠
//            item.setCouponPrice(BigDecimal.ZERO);
//        });
//
//        //核算
//
//        //总优惠
//        cart.setTotalDiscount(BigDecimal.ZERO);
//
//        //商品总价
//
//        cart.setTotalItemPrice(cart.getItems().stream().map(
//                item -> item
//                        .getPrice()
//                        .multiply(BigDecimal.valueOf(item.getQuantity())))
//                .reduce(BigDecimal.ZERO, BigDecimal::add));
//
//        //计算运费总价
//        cart.setTotalDeliveryPrice(cart.getItems().stream().map(Item::getDeliveryPrice).reduce(BigDecimal.ZERO, BigDecimal::add));
//
//        //计算总优惠
//        cart.setTotalDiscount(cart.getItems().stream().map(Item::getCouponPrice).reduce(BigDecimal.ZERO, BigDecimal::add));
//
//        //应付总价=商品总价+运费总价-总优惠
//        cart.setPayPrice(cart.getTotalItemPrice().add(cart.getTotalDeliveryPrice()).subtract(cart.getTotalDiscount()));
//
//        return cart;
//
//    }
}
